/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package br.ufg.inf.pos.bd;

import br.ufg.inf.pos.br.utils.RegraDaoException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.sql.SQLException;
import sun.misc.BASE64Encoder;

/**
 *
 * @author luan
 */
public class FuncionarioServiceImpl implements FuncionarioService{

    FuncionarioDao funcionarioDao;

    public FuncionarioServiceImpl() {
        
        funcionarioDao = new FuncionarioDaoImpl();
    }
    
    
    
    @Override
    public Funcionario validarAcesso(Funcionario funcionarioAValidar) throws RegraNegocioException{
        try{
        verificaIntegridade(funcionarioAValidar);
        funcionarioAValidar = encripta(funcionarioAValidar);        
        return funcionarioDao.validarAcesso(funcionarioAValidar);
        }catch(RegraDaoException ex){
         throw new RegraNegocioException(ex.getMessage());
        }
    }

    @Override
    public Funcionario encripta(Funcionario funcionario) {
  
        try {     
                 MessageDigest digest = MessageDigest.getInstance("MD5");      
                 digest.update(funcionario.getSenha().getBytes());      
                 BASE64Encoder encoder = new BASE64Encoder ();      
                 funcionario.setSenha(encoder.encode (digest.digest ()));
                return funcionario;      
            } catch (NoSuchAlgorithmException ns) {     
                 ns.printStackTrace ();      
                 return funcionario;      
            }      
       }  
    
    private void verificaIntegridade(Funcionario funcionario) {
       if(funcionario.getLogin()== null || funcionario.getLogin().equalsIgnoreCase("")){
            throw new RegraNegocioException("Favor inforar o usuário");
       }else if(funcionario.getSenha()== null || funcionario.getSenha().equalsIgnoreCase("")){
            throw new RegraNegocioException("Favor informar a senha");
       }
        
    }
    
    
}
